/**
 * 子任务(协程)测试
 * */
#include "SwTask.h"
#include "stdio.h"

sw_task_t sw_root = 0;
sw_task_t sw_child1 = 0;

//测试子程序功能
char sw_child2_task(){
    printf("i am child 2\n");
    return SW_ENDED;
}

char sw_child1_task(){
    SW_BEGIN(sw_child1);
    
    SW_WAIT_TASK(sw_child1, sw_child2_task());
    printf("i am child 1\n");

    return SW_ENDED;
    
    SW_END(sw_child1);
}

char sw_root_task(){
    SW_BEGIN(sw_root);

    SW_WAIT_TASK(sw_root, sw_child1_task());
    printf("i am root\n");
    return SW_ENDED;
    
    SW_END(sw_root);
}

int main(){
    while (1){
        if( sw_root_task() == SW_ENDED ){
            break;//只运行一次
        }
    }

    return 0;
}